﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using negocios;
using objetos;

namespace softsales.contabilidade
{
    public partial class frmCentroCustoContaContabil : softsales.template.frmBase
    {
        public frmCentroCustoContaContabil()
        {
            InitializeComponent();
        }
        BLL_TB_CENTRO_CUSTO_CONTA_CONTABIL b_tb_centro_custo_conta_contabil = new BLL_TB_CENTRO_CUSTO_CONTA_CONTABIL();
        OBJ_TB_CENTRO_CUSTO_CONTA_CONTABIL o_tb_centro_custo_conta_contabil = new OBJ_TB_CENTRO_CUSTO_CONTA_CONTABIL();

        OBJ_TB_CENTRO_CUSTO o_tb_centro_custo = new OBJ_TB_CENTRO_CUSTO();
        BLL_TB_CENTRO_CUSTO b_tb_centro_custo = new BLL_TB_CENTRO_CUSTO();

        OBJ_TB_CONTA_CONTABIL o_tb_conta_contabil = new OBJ_TB_CONTA_CONTABIL();
        BLL_TB_CONTA_CONTABIL b_tb_conta_contabil = new BLL_TB_CONTA_CONTABIL();

        private void frmCentroCustoContaContabil_Load(object sender, EventArgs e)
        {                      
            grdCentroCustoContaContabil.Focus();
            grdCentroCustoContaContabil.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
         //   b_tb_centro_custo.PreencheControleWindows(id_centro_custoComboBox, true);
         //   b_tb_conta_contabil.PreencheControleWindows(id_conta_contabilComboBox, true);
            CarregaGrid();

        }


        public override void btnExcluir_Click(object sender, EventArgs e)
        {
            base.btnExcluir_Click(sender, e);
        }

        public override void btnEditar_Click(object sender, EventArgs e)
        {

            string id = string.Empty;

            foreach (DataGridViewRow item in grdCentroCustoContaContabil.Rows)
            {
                if (item.Selected)
                {
                    id = item.Cells["id"].Value.ToString();
                }

            }
 

            o_tb_centro_custo_conta_contabil = b_tb_centro_custo_conta_contabil.SelecionarObjetoPorId(Convert.ToInt32(id));

            o_tb_centro_custo = b_tb_centro_custo.SelecionarObjetoPorId(o_tb_centro_custo_conta_contabil.id_centro_custo);
            o_tb_conta_contabil = b_tb_conta_contabil.SelecionarObjetoPorId(o_tb_centro_custo_conta_contabil.id_conta_contabil);

            idTextBox.Text = o_tb_centro_custo_conta_contabil.id.ToString();

            id_centro_custoComboBox.SelectedIndex = id_centro_custoComboBox.FindStringExact(o_tb_centro_custo.desc_centro_custo);
            id_conta_contabilComboBox.SelectedIndex = id_conta_contabilComboBox.FindStringExact(o_tb_conta_contabil.desc_conta_contabil);
            sit_ativoCheckBox.Checked = o_tb_centro_custo_conta_contabil.sit_ativo;

 
            base.btnEditar_Click(sender, e);
            tabContainer.SelectedTab = tabFormulario;


        }

        public override void btnNovo_Click(object sender, EventArgs e)
        {
            base.btnNovo_Click(sender, e);
            tabContainer.SelectedTab = tabFormulario;
            idTextBox.Enabled = false;
            LimpaControles(this);


        }

        public override void btnCancelar_Click(object sender, EventArgs e)
        {

            base.btnCancelar_Click(sender, e);
            id_centro_custoComboBox.SelectedIndex = 0;
            id_conta_contabilComboBox.SelectedIndex = 0;
            idTextBox.Text = string.Empty;            
            tabContainer.SelectedTab = tabLista;
        }

        public override void LimpaControles(Control ctl)
        {
            base.LimpaControles(ctl);
        }

        public override void btnLocalizar_Click(object sender, EventArgs e)
        {
            frmCentroCustoContaContabilLocalizar fCentroCustoContaContabilLocalizar = new frmCentroCustoContaContabilLocalizar();
            List<OBJ_TB_CENTRO_CUSTO_CONTA_CONTABIL> lista_centro_custo_conta_contabil = new List<OBJ_TB_CENTRO_CUSTO_CONTA_CONTABIL>();
            DataTable dt = b_tb_centro_custo_conta_contabil.CriarDataTable();

            if (fCentroCustoContaContabilLocalizar.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                List<string> where = new List<string>();

                if (fCentroCustoContaContabilLocalizar.id != string.Empty)
                    where.Add(string.Format(" tb_centro_custo_conta_contabil.id = {0}", fCentroCustoContaContabilLocalizar.id));

                if (fCentroCustoContaContabilLocalizar.desc_centro_custo != string.Empty)
                    where.Add(string.Format(" tb_centro_custo.desc_centro_custo LIKE '%{0}%'", fCentroCustoContaContabilLocalizar.desc_centro_custo));

                if (fCentroCustoContaContabilLocalizar.desc_conta_contabil != string.Empty)
                    where.Add(string.Format(" tb_conta_contabil.desc_conta_contabil LIKE '%{0}%'", fCentroCustoContaContabilLocalizar.desc_centro_custo));

                lista_centro_custo_conta_contabil = b_tb_centro_custo_conta_contabil.SelecionarLista(string.Join("and", where.ToArray()).ToString(), "");

                if (lista_centro_custo_conta_contabil.Count > 0)
                {

                    for (int i = 0; i <= lista_centro_custo_conta_contabil.Count - 1; i++)
                    {

                        b_tb_centro_custo_conta_contabil.PreencheDataTable(dt, lista_centro_custo_conta_contabil[i]);

                    }

                    grdCentroCustoContaContabil.DataSource = dt;
                    grdCentroCustoContaContabil.Refresh();
                }
                else
                {
                    MessageBox.Show("Nenhum registro encontrado.");
                }
            }
            //base.btnLocalizar_Click(sender, e);

        }

        public override void btnSalvar_Click(object sender, EventArgs e)
        {
            base.btnSalvar_Click(sender, e);
        }

        public override bool Editar()
        {
            return base.Editar();
        }

        public override bool Localizar()
        {
            return base.Localizar();
        }

        public override bool Salvar()
        {
            try
            {
 
                o_tb_centro_custo_conta_contabil.id_centro_custo = ((OBJ_TB_CENTRO_CUSTO)id_centro_custoComboBox.SelectedItem).id;
                o_tb_centro_custo_conta_contabil.id_conta_contabil = ((OBJ_TB_CONTA_CONTABIL)id_conta_contabilComboBox.SelectedItem).id;
                o_tb_centro_custo_conta_contabil.sit_ativo = sit_ativoCheckBox.Checked;

                if (idTextBox.Text != string.Empty)
                {
                    o_tb_centro_custo_conta_contabil.id = Convert.ToInt32(idTextBox.Text);
                    b_tb_centro_custo_conta_contabil.Alterar(o_tb_centro_custo_conta_contabil);
                }
                else
                {
                    b_tb_centro_custo_conta_contabil.Incluir(o_tb_centro_custo_conta_contabil);
                }
                tabContainer.SelectedTab = tabLista;
                CarregaGrid();
                return true;
            }
            catch (Exception)
            {

                return false;
            }

        }

        public override bool Excluir()
        {
            try
            {
                o_tb_centro_custo_conta_contabil.id = Convert.ToInt32(idTextBox.Text);
                b_tb_centro_custo_conta_contabil.Excluir(o_tb_centro_custo_conta_contabil);
                tabContainer.SelectedTab = tabLista;
                CarregaGrid();
                return true;
            }
            catch (Exception)
            {

                return false;
            }

        }

        public override void btnFechar_Click(object sender, EventArgs e)
        {
            base.btnFechar_Click(sender, e);
        }

        public override void CarregaGrid()
        {
            try
            {

                List<OBJ_TB_CENTRO_CUSTO_CONTA_CONTABIL> lista_centro_custo_conta_contabil = new List<OBJ_TB_CENTRO_CUSTO_CONTA_CONTABIL>();
                DataTable dt = b_tb_centro_custo_conta_contabil.CriarDataTable();
                lista_centro_custo_conta_contabil = b_tb_centro_custo_conta_contabil.SelecionarLista();

                for (int i = 0; i <= lista_centro_custo_conta_contabil.Count -1; i++)
                {
                    b_tb_centro_custo_conta_contabil.PreencheDataTable(dt, lista_centro_custo_conta_contabil[i]);
                }

                grdCentroCustoContaContabil.DataSource = dt;
                grdCentroCustoContaContabil.Refresh();
            }
            catch (Exception)
            {
                
                throw;
            }
            
 
        }
     

    }
}
